#ifndef POINTH
#define POINTH

#include <gmpxx.h>
#include <vector>
#include <algorithm>

#include "sign.h"

using std::vector;

struct point
{
	point();
	point(double const, double const);
	point(const point&);
	
	point& operator =(const point&);
		
	mpq_class x, y;
};

struct cmp_by_x
{
	bool operator() (const point&, const point&) const;
};
	
struct cmp_by_angle
{
	bool operator() (const point&, const point&) const;
		
	cmp_by_angle();
	cmp_by_angle(const point&);
	
	point center;
};

mpq_class distance2 (const point&, const point&);
sign left_turn(const point&, const point&, const point&);
	
#include "point.hpp"

#endif
